package com.shxt.framework.commons.util;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
 * final关键字
 * 1.修饰类 不允许被继承
 * 2.修饰方法 不允许被重写
 * 3.修饰变量 不允许修改地址(引用数据)
 */
public final class MyBatisUtils {
	//private 外部无法实例化该构造函数
	private MyBatisUtils() {}

	//定义核心配置文件的所在位置
	private static final String PATH = "mybatis-config.xml";
	private static SqlSessionFactory factory;//单例设计模式

	//静态代码块:只能使用静态变量和静态方法
	static {
		try {
			InputStream is = Resources.getResourceAsStream(PATH);//加载核心文件
			factory = new SqlSessionFactoryBuilder().build(is);//创建SqlSessionFactory
		} catch (IOException ex) {
			ex.printStackTrace();//程序员使用
			throw new RuntimeException("加载核心配置文件失败");//处理异常
		}
	}
	//获取sqlSession
	public static SqlSession getSqlSession() {
		return factory.openSession();
	}
	//关闭sqlSession
	public static void closeSqlSession(SqlSession sqlSession) {
		if(sqlSession!=null) {
			sqlSession.close();
		}
	}

}
